\section{Properties}\label{sec:properties}


Polkadot provides the following properties to parachains:

%\eray{Polkadot provides the following properties.}{-comment: This sentence by itself is strange and does not add any content. Either remove it or put some more explanation, e.g., ``Polkadot provides utility, finality, decentralization, availability, messaging reliability, reasonable size and bandwidth properties that we explain in detail in this section. ".-}
\syed{}{We need something which relates these properties together, perhaps says why they are necessary,...}
 
\subsection{Utility}

 The state machine of each parachain in Polkadot provides a utility to the system participants. 
 %\eray{It is ensured by state machines that interprets the willingness of a participant to pay for %a transaction to be included}{-comment: This sentence does not have an object. It is not clear what is ensured. I did not understand it well, but here is what I got from it: `` State machines interpret the willingness of a participant to pay for a transaction."- }.
 Polkadot governance mechanism enables participants to decide what state machines should be included based on needs of participants.
\syed{}{Are we equating parachain with a state machine in this section? if so we need to make that clear here or somewhere in the background section}

One can divides the Polkadot state machine into sub state machines which are recording the state of each parachain. In such model, the state machine of each parachain provides a utility participants. 
 
 \eray{It is ensured by state machines that interprets the willingness of a participant to pay for a transaction to be included}{-comment: This sentence does not have an object. It is not clear what is ensured. I did not understand it well, but here is what I got from it: `` State machines interpret the willingness of a participant to pay for a transaction."- }.  
 Polkadot governance mechanism enables participants to decide which state machines should be included based on the needs of participants. 

\subsection{Validity}
By Validity we refer to the Validity of a new state of a parachain as defined by its own state transition function which defines the transition rules of the parachain state machine. Validators who are responsible to (in)validate and produce blocks in the relay chain  know these functions so that they can  check whether a given state of a parachain is valid or not.  In Polkadot, we have three levels of validity checks for each state of each parachain. The first-level check of a parachain state is executed by validators who are responsible for this parachain. These validators are called parachain validators and they shift from one parachain to another periodically. The second level of check is executed by staked parties called fishermen who report to validators if they see any invalid state to receive some reward. And the last level of check is executed by randomly chosen validators after the block including the state is produced. These checks guarantee that it is almost impossible to have a finalized invalid state in the relay chain.

 \subsection{Validity}
Validity of a new state of a parachain is defined by its own state transition function that defines how a parachain can move from one state to another. Validators who are responsible to (in)validate and produce blocks in the relay chain  know these functions so that they can  check whether a given state of a parachain is valid or not.  In Polkadot, we have three levels of validity checks for each state of each parachain. The first-level check of a parachain state is executed by validators who are responsible for this parachain. These validators are called parachain validators and they shift from one parachain to another periodically. The second level of check is executed by fishermen. And the last level of check is executed by randomly chosen validators after the block including the state is produced. These checks guarantee that it is almost impossible to have a finalized invalid state in the relay chain.

 \subsection{Finality}

\syed{}{We need a minimal definition of finality before we say finality is important to us} 

It is necessary to provide finality on a state of a parachain  to provide a reliable communication in Polkadot so that parachains act by relying on the fact that the data provided by Polkadot related to other parachains will never change. Polkadot provides the finality property via relay chain which is based on a heterogeneous consensus mechanism that includes provable consensus and probable consensus. The relay chain provides provable consensus with GRANDPA (GHOST-based Recursive ANcestor Deriving Prefix Agreement)  finality gadget. Validators are supposed to vote for a chain in GRANDPA  which has valid blocks (e.g., having valid states of parachains). The probable consensus is based on the block production mechanism of the relay chain that is called BABE (Blind Assignment for Blockchain Extension). BABE is a proof-of-stake based block production mechanism that privately and evenly assigns validators to produce blocks.

\subsection{Decentralization}

While decentralization has been one of the main motivation to adopt the blockchain model, some of the most popular blockchain projects are becoming more and more centralized.
This centralization can be caused by several factors, such as
a) a block-producer selection method where some minorities are over-represented or receive disproportionate power, or
b) an incentive mechanism that concentrates wealth or encourages cartel formation.
As we explain in the corresponding sections, our validator selection method (based on nominated proof-of-stake)
as well as our incentive layer are particularly designed to defy/resist  centralization,
and we provide new and precise decentralization guarantees.


\subsection{Availability}\label{sec:availability}
\syed{}{We need a one-liner definition of each property before talking about it}
 The availability of data in parachains is very critical because only available data can be validated.  In Polkadot, we provide availability via erasure codes of data which are distributed to validators. Thus, when a validator needs to access to the data, he/she can contact with some subset of validators to construct it. We guarantee that any state with some unavailable data cannot be finalized in the relay chain.


%TODO IN FUTURE: We may need to add more detail about the following two properties
\subsection{Messaging Reliability} Polkadot provides message reliability by regulating and ordering of any messages sent and received among parachains or parathreads.

\subsection{Reasonable Size and Bandwidth} In Polkadot, the block size is selected carefully with respect to scalability and security. 
\eray{}{-comment: What is the block size? If mentioned in the coming sections, refer to that. The title has bandwidth, but nothing is mentioned about it.-}

% How do we achieve them?

% Briefly breaking them down into components.
